home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / ASM-Z.ZIP / ZEP.ASM < prev    next >
Assembly Source File  |  1992-11-12  |  6KB  |  242 lines

  1.  
  2. PAGE  59,132
  3.  
  4. ;██████████████████████████████████████████████████████████████████████████
  5. ;██                                         ██
  6. ;██                    ZEP                         ██
  7. ;██                                         ██
  8. ;██      Created:   12-Nov-92                             ██
  9. ;██      Passes:    5           Analysis Options on: none             ██
  10. ;██                                         ██
  11. ;██████████████████████████████████████████████████████████████████████████
  12.  
  13. data_1e        equ    0A0h
  14. data_9e        equ    418h            ;*
  15.  
  16. seg_a        segment    byte public
  17.         assume    cs:seg_a, ds:seg_a
  18.  
  19.  
  20.         org    100h
  21.  
  22. zep        proc    far
  23.  
  24. start:
  25.         jmp    short loc_1
  26.         db    90h
  27. data_2        db    0
  28. data_3        dw    216h
  29.         db    2
  30. data_4        dw    0
  31.         db    'TheDraw COM file Screen Save'
  32.         db    1Ah
  33. data_5        db    'Unsupported Video Mode', 0Dh, 0Ah
  34.         db    '$'
  35. loc_1:
  36.         mov    ah,0Fh
  37.         int    10h            ; Video display   ah=functn 0Fh
  38.                         ;  get state, al=mode, bh=page
  39.                         ;   ah=columns on screen
  40.         mov    bx,0B800h
  41.         cmp    al,2
  42.         je    loc_2            ; Jump if equal
  43.         cmp    al,3
  44.         je    loc_2            ; Jump if equal
  45.         mov    data_2,0
  46.         mov    bx,0B000h
  47.         cmp    al,7
  48.         je    loc_2            ; Jump if equal
  49.         mov    dx,offset data_5    ; ('Unsupported Video Mode')
  50.         mov    ah,9
  51.         int    21h            ; DOS Services  ah=function 09h
  52.                         ;  display char string at ds:dx
  53.         retn
  54. loc_2:
  55.         mov    es,bx
  56.         mov    di,data_4
  57.         mov    si,offset data_6
  58.         mov    dx,3DAh
  59.         mov    bl,9
  60.         mov    cx,data_3
  61.         cld                ; Clear direction
  62.         xor    ax,ax            ; Zero register
  63.  
  64. locloop_4:
  65.         lodsb                ; String [si] to al
  66.         cmp    al,1Bh
  67.         jne    loc_5            ; Jump if not equal
  68.         xor    ah,80h
  69.         jmp    short loc_20
  70. loc_5:
  71.         cmp    al,10h
  72.         jae    loc_8            ; Jump if above or =
  73.         and    ah,0F0h
  74.         or    ah,al
  75.         jmp    short loc_20
  76. loc_8:
  77.         cmp    al,18h
  78.         je    loc_11            ; Jump if equal
  79.         jnc    loc_12            ; Jump if carry=0
  80.         sub    al,10h
  81.         add    al,al
  82.         add    al,al
  83.         add    al,al
  84.         add    al,al
  85.         and    ah,8Fh
  86.         or    ah,al
  87.         jmp    short loc_20
  88. loc_11:
  89.         mov    di,data_4
  90.         add    di,data_1e
  91.         mov    data_4,di
  92.         jmp    short loc_20
  93. loc_12:
  94.         mov    bp,cx
  95.         mov    cx,1
  96.         cmp    al,19h
  97.         jne    loc_13            ; Jump if not equal
  98.         lodsb                ; String [si] to al
  99.         mov    cl,al
  100.         mov    al,20h            ; ' '
  101.         dec    bp
  102.         jmp    short loc_14
  103. loc_13:
  104.         cmp    al,1Ah
  105.         jne    loc_15            ; Jump if not equal
  106.         lodsb                ; String [si] to al
  107.         dec    bp
  108.         mov    cl,al
  109.         lodsb                ; String [si] to al
  110.         dec    bp
  111. loc_14:
  112.         inc    cx
  113. loc_15:
  114.         cmp    data_2,0
  115.         je    loc_18            ; Jump if equal
  116.         mov    bh,al
  117.  
  118. locloop_16:
  119.         in    al,dx            ; port 3DAh, CGA/EGA vid status
  120.         rcr    al,1            ; Rotate thru carry
  121.         jc    locloop_16        ; Jump if carry Set
  122. loc_17:
  123.         in    al,dx            ; port 3DAh, CGA/EGA vid status
  124.         and    al,bl
  125.         jnz    loc_17            ; Jump if not zero
  126.         mov    al,bh
  127.         stosw                ; Store ax to es:[di]
  128.         loop    locloop_16        ; Loop if cx > 0
  129.  
  130.         jmp    short loc_19
  131. loc_18:
  132.         rep    stosw            ; Rep when cx >0 Store ax to es:[di]
  133. loc_19:
  134.         mov    cx,bp
  135. loc_20:
  136.         jcxz    loc_ret_21        ; Jump if cx=0
  137.         loop    locloop_4        ; Loop if cx > 0
  138.  
  139.  
  140. loc_ret_21:
  141.         retn
  142. data_6        db    9
  143.         db     10h, 19h, 45h, 18h, 19h, 1Bh
  144.         db     01h,0D5h,0CDh,0CDh,0B8h, 04h
  145.         db    0F3h, 09h,0A9h, 04h, 9Dh
  146.         db    9
  147.         db    0AAh, 04h,0F2h, 01h,0D5h,0CDh
  148.         db    0CDh,0B8h, 19h, 1Ch, 18h, 19h
  149.         db     12h,0D5h, 1Ah, 0Ah,0CDh,0BEh
  150.         db     20h, 09h, 5Ch, 04h,0F6h, 09h
  151.         db     2Fh, 20h, 01h,0D4h, 1Ah, 0Ah
  152.         db    0CDh,0B8h, 19h, 13h, 18h, 19h
  153.         db     03h,0C9h, 1Ah, 0Dh,0CDh,0BEh
  154.         db     19h, 03h, 0Fh,0D2h,0B7h, 19h
  155.         db     04h,0D6h, 1Ah, 03h,0C4h,0B7h
  156.         db     20h,0D2h,0D2h,0C4h,0C4h,0C4h
  157.         db    0B7h, 19h, 04h, 01h,0D4h, 1Ah
  158.         db     0Eh,0CDh,0BBh, 19h, 03h, 18h
  159.         db     19h, 03h,0BAh, 19h, 12h, 07h
  160.         db    0BAh,0BAh, 19h, 04h,0BAh, 19h
  161.         db     03h,0BDh, 20h,0BAh,0BAh, 19h
  162.         db     02h,0D3h,0B7h, 19h, 13h, 01h
  163.         db    0BAh, 19h, 03h, 18h, 19h, 03h
  164.         db    0BAh, 19h, 07h, 0Bh, 1Ah, 02h
  165.         db     04h, 19h, 07h, 08h,0BAh,0B6h
  166.         db     19h, 04h,0C7h,0C4h,0B6h, 19h
  167.         db     03h,0BAh,0B6h, 19h, 03h,0BAh
  168.         db     19h, 07h, 0Bh, 1Ah, 02h, 04h
  169.         db     19h, 08h, 01h,0BAh, 19h, 03h
  170.         db     18h,0D6h,0C4h,0C4h, 20h,0BAh
  171.         db     19h, 12h, 08h,0BAh,0D3h, 19h
  172.         db     02h,0B7h, 20h,0BAh, 19h, 03h
  173.         db    0B7h, 20h,0BAh,0D3h, 19h, 02h
  174.         db    0D6h,0BDh, 19h, 13h, 01h,0BAh
  175.         db     20h,0C4h,0C4h,0B7h, 18h,0D3h
  176.         db    0C4h,0C4h,0C4h,0BDh, 19h, 12h
  177.         db     08h,0D3h, 1Ah, 03h,0C4h,0BDh
  178.         db     20h,0D3h, 1Ah, 03h,0C4h,0BDh
  179.         db     20h,0D0h, 1Ah, 03h,0C4h,0BDh
  180.         db     19h, 14h, 01h,0D3h,0C4h,0C4h
  181.         db    0C4h,0BDh, 18h, 04h, 1Ah, 04h
  182.         db     3Eh, 19h, 03h, 0Fh,0D6h, 1Ah
  183.         db     04h,0C4h,0B7h, 20h,0D6h, 1Ah
  184.         db     03h,0C4h,0B7h, 20h,0D2h,0D2h
  185.         db    0C4h,0C4h,0C4h,0B7h, 20h,0D2h
  186.         db    0D2h,0C4h,0C4h,0C4h,0B7h, 20h
  187.         db    0D6h, 1Ah, 03h,0C4h,0B7h, 20h
  188.         db    0D2h,0B7h, 19h, 04h,0D2h, 20h
  189.         db     20h,0D2h,0D2h,0C4h,0C4h,0C4h
  190.         db    0B7h, 19h, 03h, 04h, 1Ah, 04h
  191.         db     3Ch, 18h, 01h,0D6h,0C4h,0C4h
  192.         db    0C4h,0B7h, 19h, 07h, 07h,0D6h
  193.         db    0C4h,0BDh
  194.         dd    319BA20h        ; Data table (indexed access)
  195.         db    0BDh, 20h,0BAh,0BDh, 19h, 02h
  196.         db    0BAh, 20h,0BAh,0BDh, 19h, 02h
  197.         db    0BAh, 20h,0BAh, 19h, 03h,0BDh
  198.         db     20h,0BAh,0BAh, 19h, 04h,0BAh
  199.         db     20h, 20h,0BAh,0BAh, 19h, 02h
  200.         db    0BAh, 19h, 03h, 01h,0D6h,0C4h
  201.         db    0C4h,0C4h,0B7h, 18h,0D3h,0C4h
  202.         db    0C4h, 20h,0BAh, 19h, 06h, 08h
  203.         db     58h, 19h, 03h,0C7h,0C4h,0B6h
  204.         db     19h, 03h,0BAh, 1Ah, 03h,0C4h
  205.         db    0BDh, 20h,0BAh, 1Ah, 03h,0C4h
  206.         db    0BDh, 20h,0C7h,0C4h,0B6h, 19h
  207.         db     03h,0BAh,0B6h, 19h, 04h,0BAh
  208.         db     20h, 20h,0BAh,0B6h, 19h, 02h
  209.         db    0BAh, 19h, 03h, 01h,0BAh, 20h
  210.         db    0C4h,0C4h,0BDh, 18h, 19h, 03h
  211.         db    0BAh, 19h, 03h, 08h,0D6h,0C4h
  212.         db    0BDh, 19h, 04h,0BAh, 19h, 03h
  213.         db    0B7h, 20h,0BAh, 19h, 05h,0BAh
  214.         db     19h, 05h,0BAh, 19h, 03h,0B7h
  215.         db     20h,0BAh,0D3h, 19h, 02h,0B7h
  216.         db     20h,0BAh, 20h, 20h,0BAh,0D3h
  217.         db     19h, 02h,0BAh, 19h, 03h, 01h
  218.         db    0BAh, 19h, 03h, 18h, 19h, 03h
  219.         db    0BAh, 19h, 03h, 08h,0D3h, 1Ah
  220.         db     04h,0C4h,0BDh, 20h,0D3h, 1Ah
  221.         db     03h,0C4h,0BDh, 20h,0BDh, 19h
  222.         db     05h,0BDh, 19h, 05h,0D3h, 1Ah
  223.         db     03h,0C4h,0BDh, 20h,0D3h, 1Ah
  224.         db     03h,0C4h,0BDh, 20h,0D0h, 20h
  225.         db     20h,0D0h, 19h, 03h,0D0h, 19h
  226.         db     03h, 01h,0BAh, 19h, 03h, 18h
  227.         db     19h, 03h,0C8h, 1Ah, 15h,0CDh
  228.         db    0B8h, 19h, 0Ch,0D5h, 1Ah, 16h
  229.         db    0CDh,0BCh, 19h, 03h, 18h, 19h
  230.         db     1Ah,0D4h,0CDh, 04h, 1Ah, 03h
  231.         db    0F7h, 09h, 2Fh, 04h,0EAh, 09h
  232.         db     5Ch, 04h, 1Ah, 03h,0F7h, 01h
  233.         db    0CDh,0BEh, 19h, 1Bh, 18h
  234.  
  235. zep        endp
  236.  
  237. seg_a        ends
  238.  
  239.  
  240.  
  241.         end    start
  242.